package com.rk.kbk.dao;

import com.rk.kbk.model.Address;
import com.rk.kbk.model.Order;
import com.rk.kbk.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

import java.util.List;

/**
 * @OrderDao
 * @订单Dao
 * @version : Ver 1.0
 */
public interface OrderDao extends JpaRepository<Order, Long>,JpaSpecificationExecutor {
     List<Order>   findByRide(User ride);
     List<Order>   findByShop(User shop);
     Order findByOrderNumber(String orderNumber);

    /**
     * 根据骑手id和订单状态获取订单列表
     * @param orderStatus
     * @return
     */
    List<Order>   findByRideAndOrderStatus(User ride,int orderStatus);
    /**
     * 根据骑手id和订单状态获取订单列表
     * @param orderStatus
     * @return
     */
    List<Order>   findByRideAndOrderStatusIn(User ride,List<Integer> orderStatus);

    /**
     * 根据骑手id集合和订单状态获取订单列表
     * @param orderStatus
     * @return
     */
    List<Order>   findByShopInAndOrderStatus(List<User> shop,Integer orderStatus);
    /**
    /**
     * 根据商家id和订单状态获取订单列表
     * @param orderStatus
     * @return
     */
    List<Order>   findByShopAndOrderStatusInOrderByGmtDatetimeDescDayOrderIndexDesc(User shop,List<Integer> orderStatus );
    /**
     * 根据商家id获取订单列表 按订单产生时间和日订单序号 倒序排列
     * @param shop
     * @return
     */
    List<Order>   findByShopOrderByGmtDatetimeDescDayOrderIndexDesc(User shop);

    /**
     * 根据单状态获取订单列表
     * @param orderStatus
     * @return
     */
    List<Order>  findByOrderStatus(int orderStatus);

    /**
     * 根据地址和 订单状态获取订单列表
     */
    List<Order>  findByOrderStatusInAndAddressUserIn(List<Integer> orderStatus, List<Address> addressUser);

    /**
     * 根据地址获取订单列表
     */
    List<Order>  findByAddressUserIn(List<Address> addressUser);


}
